|
(*~\Глагол\Отделы\Поле~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
(**) ОТДЕЛ Памятка;
(******************************************************************************
* НАЗНАЧЕНИЕ: хранилище для ПолеПамятки
******************************************************************************)
ИСПОЛЬЗУЕТ
Надел,
Цепь ИЗ "..\Иное\",
Набор ИЗ "..\Иное\",
Настройки ИЗ "..\Обмен\",
Читать ИЗ "..\Обмен\",
Писать ИЗ "..\Обмен\";
ПОСТ
ВсегоСтрок = 30;
ВИД
ДЦепь = ДОСТУП К ЦЕПЬ;
Доступ-=ДОСТУП К Вид;
Вид-=НАБОР(Набор.Вид)
имя:ДЦепь;
строк-:ЦЕЛ;
строки-:РЯД ВсегоСтрок ИЗ ДЦепь;
КОН;
ПЕР
памятки:Набор.Список;
(******************************************************************************)
ЗАДАЧА ДобавитьСтроку-(памятка:Доступ; цепь-:ЦЕПЬ);
ПЕР
строка:ЦЕЛ;
дцепь:ДЦепь;
УКАЗ
ЕСЛИ цепь = "" ТО
ВОЗВРАТ
КОН;
строка:=0;
КОЛЬЦО
ЕСЛИ строка >= памятка.строк ТО
(* создаём наверху новую строку *)
ЕСЛИ строка >= ВсегоСтрок ТО
УМЕНЬШИТЬ(строка)
КОН;
памятка.строк:=строка+1;
СОЗДАТЬ(дцепь,цепь);
ВЫХОД
КОН;
ЕСЛИ Цепь.Сравнить(памятка.строки[строка]^,цепь) = 0 ТО
(* переносим строку наверх *)
дцепь:=памятка.строки[строка];
ВЫХОД
КОН;
УВЕЛИЧИТЬ(строка)
КОН;
ПОКА строка > 0 ВЫП
памятка.строки[строка]:=памятка.строки[строка-1];
УМЕНЬШИТЬ(строка)
КОН;
памятка.строки[0]:=дцепь
КОН ДобавитьСтроку;
(******************************************************************************)
ЗАДАЧА ПохожаяСтрока-(памятка:Доступ; цепь-:ЦЕПЬ):ЦЕЛ;
ПЕР
строка:ЦЕЛ;
УКАЗ
ОТ строка:=0 ДО памятка.строк-1 ВЫП
ЕСЛИ Цепь.ПохожееНачало(цепь,памятка.строки[строка]^) ТО
ВОЗВРАТ строка
КОН
КОН;
ВОЗВРАТ -1
КОН ПохожаяСтрока;
(******************************************************************************)
ЗАДАЧА Найти-(имя-:ЦЕПЬ):Доступ;
(* Поиск памятки *)
ПЕР
памятка:Доступ;
звено:Набор.Звено;
УКАЗ
звено:=Набор.ПервоеЗвено(памятки);
ПОКА звено # ПУСТО ВЫП
памятка:=звено.данные(Доступ);
ЕСЛИ памятка.имя^ = имя ТО
ВОЗВРАТ памятка
КОН;
звено:=звено.след
КОН;
СОЗДАТЬ(памятка);
СОЗДАТЬ(памятка.имя,имя);
Набор.ВКонецСписка(памятки,памятка);
ВОЗВРАТ памятка
КОН Найти;
(******************************************************************************)
(* ******* чтение и запись в поток ******* *)
(******************************************************************************)
ЗАДАЧА ПисатьПамятку(поток:Писать.Поток; памятка:Доступ);
ПЕР
строка:ЦЕЛ;
УКАЗ
Настройки.ПисатьСтроку(поток,"памятка",памятка.имя^);
Настройки.ПисатьЦел(поток,"строк",памятка.строк);
ОТ строка:=0 ДО памятка.строк-1 ВЫП
Настройки.ПисатьСтроку(поток,"",памятка.строки[строка]^)
КОН
КОН ПисатьПамятку;
(******************************************************************************)
ЗАДАЧА ЧитатьПамятку(поток:Читать.Поток):Доступ;
ПЕР
памятка:Доступ;
строка:ЦЕЛ;
имя:ЦЕПЬ[200];
УКАЗ
СОЗДАТЬ(памятка);
Настройки.ЧитатьСтроку(поток,имя);
СОЗДАТЬ(памятка.имя,имя);
памятка.строк:=Настройки.ЧитатьЦел(поток);
ОТ строка:=0 ДО памятка.строк-1 ВЫП
Настройки.ЧитатьСтроку(поток,имя);
СОЗДАТЬ(памятка.строки[строка],имя)
КОН;
ВОЗВРАТ памятка
КОН ЧитатьПамятку;
(******************************************************************************)
ЗАДАЧА ЧитатьНастройки-(поток:Читать.Поток);
ПЕР
памятка,памяток:ЦЕЛ;
УКАЗ
Набор.ОчиститьСписок(памятки);
памяток:=Настройки.ЧитатьЦел(поток);
ОТ памятка:=0 ДО памяток-1 ВЫП
Набор.ВКонецСписка(памятки,ЧитатьПамятку(поток))
КОН
КОН ЧитатьНастройки;
(******************************************************************************)
ЗАДАЧА ПисатьНастройки-(поток:Писать.Поток);
ПЕР
звено:Набор.Звено;
УКАЗ
Настройки.ПисатьЦел(поток,"памяток",памятки.звеньев);
звено:=Набор.ПервоеЗвено(памятки);
ПОКА звено # ПУСТО ВЫП
ПисатьПамятку(поток,звено.данные(Доступ));
звено:=звено.след
КОН
КОН ПисатьНастройки;
(******************************************************************************)
УКАЗ
Набор.ОчиститьСписок(памятки)
КОН Памятка.
|
|